'use strict';
const crypto = require("crypto");

module.exports = app => {
  const { STRING, INTEGER, DATE, ENUM } = app.Sequelize;
  // 配置（重要：一定要配置详细，一定要！！！）
  const Bank = app.model.define('bank', {
    id: {
      type: INTEGER(30).UNSIGNED,
      primaryKey: true,
      autoIncrement: true
    },
    type: {
      type: ENUM,
      values: ['shop', 'wxuser'],
      allowNull: false,
      defaultValue: 'shop',
      comment: '类型 shop商家  wxuser代理 '
    },
    type_id: {
      type: INTEGER(30),
      allowNull: false,
      defaultValue: 0,
      comment: '商家 代理 id'
    },
    bankconfig_id: {
      type: INTEGER(30).UNSIGNED,
      allowNull: false,
      comment: '银行卡配置id',
      //  定义外键（重要）
      references: {
        model: 'bank-config', // 对应表名称（数据表名称）
        key: 'id' // 对应表的主键
      },
      onUpdate: 'restrict', // 更新时操作
    },
    name: {
      type: STRING(200),
      allowNull: false,
      defaultValue: '',
      comment: '持卡人名称',
    },
    code: {
      type: STRING(200),
      allowNull: false,
      defaultValue: '',
      comment: '卡号',
    },
    bank_branch: {
      type: STRING(200),
      allowNull: false,
      defaultValue: '',
      comment: '支行名称',
    },
    created_at: DATE,
    updated_at: DATE,
  });
  // 定义关联关系
  Bank.associate = function (model) {
    Bank.belongsTo(app.model.BankConfig, {
      foreignKey: 'bankconfig_id',
      as:'bankconfig'
    });
  };


  return Bank;
};